#pragma once

/**
 * A function type that interpolates between a min and a max value based on a factor.
 *
 * @param min The lower bound.
 * @param max The upper bound.
 * @param amount The interpolation factor.
 * @return The resulting value.
 */
typedef float (*vus_interpolator)(float min, float max, float amount);

/**
 * Interpolates linearly between two values.
 *
 * @param min The lower bound.
 * @param max The upper bound.
 * @param amount The interpolation factor.
 * @return The resulting value.
 */
VENTUS_EXPORT float vus_linear_interpolator(float min, float max, float amount);

/**
 * Interpolates between two values using a cosine curve.
 *
 * @param min The lower bound.
 * @param max The upper bound.
 * @param amount The interpolation factor.
 * @return The resulting value.
 */
VENTUS_EXPORT float vus_cosine_interpolator(float min, float max, float amount);
